package fiuba.algo3.control;

import fiuba.algo3.Juego;
import fiuba.algo3.vista.VistaConsola;

public class Principal {
	public static void main(String args[]) throws Exception {	
		Juego modelo = new Juego();
		
		Controlador control = new Controlador(modelo);
		VistaConsola vista = new VistaConsola(control);
		
		control.setVista(vista);
		vista.setModelo(modelo);
		try{
			vista.bienvenida();
		}
		catch (RuntimeException e)
		{
			vista.mensajeProblemaInesperado();
			return;	
		}
		boolean fin = false;
		while (!fin){
			// por si salta alguna excepcion de los archivos
			try
			{
				if (control.ladronAtrapado()){
					vista.mostrarResultadoLadronAtrapado(true, true);
					int opcion_seguir = vista.menuSeguirJugando();
					fin = control.escucharMenuSeguirJugando(opcion_seguir);
				}
				else if (control.ladronEscapo()){
					if (!modelo.ladronEscapoConOrden())
						vista.mostrarResultadoLadronAtrapado(false, false);
					else
						vista.mostrarResultadoLadronAtrapado(false, true);
					int opcion_seguir = vista.menuSeguirJugando();
					fin = control.escucharMenuSeguirJugando(opcion_seguir);
				}
				else if(control.finDelTiempo()){
					vista.mostrarResultadoTiempoCumplido();
					int opcion_seguir = vista.menuSeguirJugando();
					fin = control.escucharMenuSeguirJugando(opcion_seguir);
				}
				else{
					int opcion = vista.menuDeOpciones();
					fin = control.escucharMenuDeOpciones(opcion);
				}
			}
			// muestro un mensaje que le avise al usuario que salimos del programa y salgo
			catch (RuntimeException e)
			{
				vista.mensajeProblemaInesperado();
				return;
			}
		}
		vista.mensajeDespedida();
	}
}